package src.itheima01;

import java.util.ArrayList;
import java.util.List;

/*
    java.util.Collection<E>:接口
        单列集合的根接口,里面定义的方法,
        子接口/实现类都有

        java.util.List<E>: 接口
            特点:
                1.有序(保证存入和取出元素的顺序是一致的)
                2.有索引
                3.可重复

        List<E>接口常用方法: 增(C),删(D),改(U),查(R)      CURD
            - public void add(int index, E element): 将指定的元素，添加到该集合中的指定位置上。
            - public E get(int index):返回集合中指定位置的元素。
            - public E remove(int index): 移除列表中指定位置的元素, 返回的是被移除的元素。
            - public E set(int index, E element):用指定元素替换集合中指定位置的元素,返回值的更新前的元素。

        remove方法和set方法,内部调用equals方法

        list.remove(new Student("zs",18))

 */
public class Demo01List {
    public static void main(String[] args) {
        //多态创建List集合的实现类对象,泛型String
        List<String> list = new ArrayList<>();
        //add: 添加数据
        list.add("aaa");
        list.add("ccc");
        System.out.println(list);//[aaa, ccc]
        //在ccc前面添加bbb
        list.add(1,"bbb");
        System.out.println(list);//[aaa, bbb, ccc]

        //获取bbb
        String str = list.get(1);
        System.out.println(str);//bbb
        System.out.println(list);//[aaa, bbb, ccc]
        System.out.println(list.size());
        System.out.println(list.get(list.size()-1));//ccc

        //删除aaa
        String whowRemoved = list.remove(0);
        System.out.println("谁被删除了? "+whowRemoved);//aaa
        System.out.println(list);//[bbb, ccc]

        //把bbb变成b
        String whoUpdate = list.set(0, "b");
        System.out.println("谁被修改了? "+whoUpdate);//bbb
        System.out.println("修改bbb为b后,集合内容: "+list);//[b, ccc]
        //把ccc变成c
        whoUpdate = list.set(1,"c");
        System.out.println("谁被修改了? "+whoUpdate);//ccc
        System.out.println("修改ccc为c后,集合内容: "+list);//[b, c]
    }
}
